package com.link.base.tencent.corpwx.usermanage.service;

import com.link.base.tencent.corpwx.addressbook.model.User;
import com.link.core.basic.service.BasicService;

import java.util.List;

/**
 * 企业用户-企业微信通讯录中的内部用户管理 
 *
 * @author 李宗庭
 * @date 2019/02/27 16:04
 */
public interface CorpWxUserService extends BasicService<User> {

    /**
    * 根据用户名获取用户信息
    * @author 李宗庭
    * @param username
    * @date 2019/3/6
    */
    User queryByUsername(String username) throws Exception;

    /**
    * 同步系统中的用户信息到企业微信的通讯录
    * @author 李宗庭
    * @param  user
    * @param agentId
    * @date 2019/3/18
    */
    void synCorpWxUserToWx(User user, String agentId) throws Exception;

    /**
    * 增量同步所有的用户信息到企业微信通讯录
    * 同步规则：1 系统中存在、企业微信中也存在的成员，更新企业微信成员
               2 系统中存在、企业微信中不存在的成员，执行添加操作
               3 系统中不存在、企业微信存在的成员，保持不变
    * @author 李宗庭
    * @param agentId
    * @return 返回jobId，用于查询批量同步的实时状况
    * @date 2019/3/18
    */
    String synCorpWxUsersToWx(String agentId) throws Exception;

    /**
     * 获取满足企业微信推送条件的用户
     *
     * @author 欧阳振强
     * @date 2019/12/24
     * @param user 企业微信用户对象 用于获取corpId
     */
    List<User> corpWxUserList(User user) throws Exception;

    /**
    * 全量同步企业微信配置了客户联系功能的客户至CRM
    * @author Lizongting
    * @date 2020/1/16
    */
    void synCorpWxFollowUserToCRM() throws Exception;
}
